#我们看看如何把Animal做成抽象类,并让子类Tiger实现
from abc import ABC, abstractmethod

"""
（1）抽象类不能被实例化
（2）抽象类需要继承ABC，并且需要至少一个抽象方法
"""

#当前类继承了abc模块的ABC类 代表当前类是一个抽象类  也就是说只要是里面定义的抽象方法，子类就必须实现
class Animal(ABC):
    def __init__(self , name , age):
        self.name = name
        self.age = age


    #使用此注解表示此方法是一个抽象方法   同时 当前类是一个抽象类
    @abstractmethod
    def cry(self):
        #动物都是有叫唤的行为的,但是这个行为是不明确的(不能明确的实现)
        pass

#编写子类Tiger，继承Animal 并实现抽象方法
class Triger(Animal):
    def cry(self):
        print(f"老虎{self.name},嗷嗷叫...")


#Can't instantiate abstract class Animal without an implementation for abstract method 'cry'
# animal = Animal()
# animal.cry()

triger = Triger("小板凳" , 20)
triger.cry()